Initially, telecommunications and data communications equipment (hereinafter referred to as network devices) were administered/controlled through a Command Line Interface (CLI) that provided the user (i.e., administrator) with a textual interface through which the administrator could type in commands. CLI connections are typically made either directly with the device through a console or remotely through a telnet connection. With the growth of the Internet, web interfaces were also created to allow administrators to remotely control network devices through web pages. In general, web interfaces provide easier access with a more visually rich format through Hypertext Markup Language (HTML). For example, commands may be grouped and displayed according to particular categories and hyperlinks may be used to allow the administrator to jump between different web pages.
To accommodate the preferences of a large number of users and because both interfaces have advantages, often, both a CLI interface and a web interface are provided to a network device. Additional interfaces may also be provided. This flexibility, however, can be costly to maintain because although many of the commands provided on the interfaces are the same, the applications corresponding to the commands must include separate code for each interface. Thus, within, for example, an Asynchronous Transfer Mode (ATM) application, a command such as “Show ATM Stats” is essentially multiple commands: a different one for each interface. While some functions may be shared, for the most part the code for each command/interface is separate. Thus, if a command needs to be changed or upgraded, each set of code must be modified. Similarly, to add a single, new command, the application writer must develop a set of code for each interface.
In addition, applications running on the network device must maintain an Application Programming Interface (API) for each external interface and must be knowledgeable about the source of each received command so that responses will be provided in the appropriate format, for example, HTML for a web interface or ASCII for a CLI. If an interface is modified or the interaction between the interface and the command within the application changes, the application will likely need to be changed. For certain software architectures, this may require a new release of the software running the network device, and the network device may need to be brought down while the software is re-installed. Thus, providing different types of interfaces increases flexibility but also increases the complexity of maintaining consistent commands across each interface and the complexity of responding to commands.